home *** CD-ROM | disk | FTP | other *** search
- /*****************************************************************************
- FILE : art_ui.c
- SHORTNAME :
- SNNS VERSION : 3.2
-
- PURPOSE : SNNS-Kernel-User-Interface for ART Networks
- NOTES :
-
- AUTHOR : Kai-Uwe Herrmann
- DATE : 17.05.92
-
- CHANGED BY : Sven Doering
- IDENTIFICATION : @(#)art_ui.c 1.8 3/15/94
- SCCS VERSION : 1.8
- LAST CHANGE : 3/15/94
-
- Copyright (c) 1990-1994 SNNS Group, IPVR, Univ. Stuttgart, FRG
-
- ******************************************************************************/
- #include "kr_typ.h" /* Global Definitions for User Interface */
- #include "kr_ui.h" /* User Interface - Function Prototypes */
-
- #include "kr_const.h" /* Global constants for kernel */
-
- #include "glob_typ.h" /* Global Definitions for User Interface */
- #include "kernel.h"
-
- #include "art_typ.h" /* ART Global Definitions */
- #include "kr_art.h" /* ART Kernel Function Prototypes */
- #include "kr_art1.h"
- #include "kr_art2.h"
- #include "kr_amap.h"
- #include "krart_df.h" /* ART definitions and Macros */
- #include "art_ui.h" /* ART User Interface Function Prototypes */
-
-
-
- /* funcname: artui_GetClassifiedStatus ()
- Purpose : Returns the classification status of the actual network
- in-Par : none
- out-Par : status : Possible results are: ART_NO_CLASSIFICATION
- ART_CLASSIFIED
- ART_NOT_CLASSIFIABLE
- ART_DONT_KNOW
- ret_val : krui_err: Returns an error if no Units defined
- */
- krui_err artui_getClassifiedStatus (art_cl_status *status)
- {
- krui_err ret_code = KRERR_NO_ERROR;
-
- *status = ART_NO_CLASSIFICATION;
-
- if (krui_getNoOfUnits() == 0) {
- ret_code = KRERR_NO_UNITS;
- return (ret_code);
- } /*if*/
-
- /* Check if network has been initialized or update- or learning function
- has been applied to it. If not, we can not know, which type of ART
- network this is, so we return, that there has been no classification.
- */
- if (NetModified) {
- return (ret_code);
- } /*if*/
-
- switch (TopoSortID) {
- case ART1_TOPO_TYPE:
- if (ART1_CLASSIFIED) {
- *status = ART_CLASSIFIED;
- } else {
- if (ART1_NOT_CLASSIFIABLE) {
- *status = ART_NOT_CLASSIFIABLE;
- } /*if*/
- } /*if*/
- break;
- case ART2_TOPO_TYPE:
- if (ART2_CLASSIFIED) {
- *status = ART_CLASSIFIED;
- } else {
- if (ART2_NOT_CLASSIFIABLE) {
- *status = ART_NOT_CLASSIFIABLE;
- } /*if*/
- } /*if*/
- case ARTMAP_TOPO_TYPE:
- if (ARTMAP_CLASSIFIED) {
- if (kram_AllMapUnitsActive()) {
- *status = ART_DONT_KNOW;
- } else {
- *status = ART_CLASSIFIED;
- } /*if*/
- } else {
- if (ARTMAP_NOT_CLASSIFIABLE) {
- *status = ART_NOT_CLASSIFIABLE;
- } /*if*/
- } /*if*/
- default:
- break;
- } /* switch */
-
- return (ret_code);
- } /* artui_getClassifiedStatus () */
-
-
-
-
- /* funcname: artui_getClassNo ()
- Purpose : Returns the index of the F2-winner-unit
- in-par : none
- out-par : class_no : If unit_no is negative, then no winning unit exists.
- ret-val : krui_err : Returns an error if no Units defined.
- */
- krui_err artui_getClassNo (int *class_no)
- {
- krui_err ret_code = KRERR_NO_ERROR;
-
- *class_no = -1;
-
- if (krui_getNoOfUnits () == 0) {
- ret_code = KRERR_NO_UNITS;
- return (ret_code);
- } /*if*/
-
- /* Check if network has been initialized or update- or learning function
- has been applied to it. If not, we can not know, which type of ART
- network this is, so we return, that there has been no classification.
- If there is a adequate TopoSortID, then we get the no. of the class,
- if there has been a classification.
- */
-
- if (NetModified) {
- return (ret_code);
- } /*if*/
-
- switch (TopoSortID) {
- case ART1_TOPO_TYPE:
- if (ART1_CLASSIFIED) {
- *class_no = kra1_getClassNo ();
- } /*if*/
- break;
- case ART2_TOPO_TYPE:
- if (ART2_CLASSIFIED) {
- *class_no = kra2_getClassNo ();
- } /*if*/
- case ARTMAP_TOPO_TYPE:
- if (ARTMAP_CLASSIFIED && (!kram_AllMapUnitsActive())) {
- *class_no = kram_getClassNo ();
- } /*if*/
- default:
- break;
- } /* switch */
-
- return (ret_code);
- } /* artui_getClassNo () */
-
-
-
- /* funcname: artui_getN ()
- Purpose : Returns the number of F1-units in an ART1 or ART2 network
- in-par : none
- out-par : N : number of F1-Units (-1 is returned if not topologically sorted)
- ret-val : krui_err: Returns an error if no Units defined.
- */
- krui_err artui_getN (int *N)
- {
- krui_err ret_code = KRERR_NO_ERROR;
-
- *N = -1;
-
- if (krui_getNoOfUnits() == 0) {
- ret_code = KRERR_NO_UNITS;
- return (ret_code);
- } /*if*/
-
- if (NetModified) {
- return (ret_code);
- } /*if*/
-
- if ((TopoSortID == ART1_TOPO_TYPE) || (TopoSortID == ART2_TOPO_TYPE)) {
- *N = NoOfInputUnits;
- } /*if*/
-
- return (ret_code);
- } /* artui_getN () */
-
-
- /* funcname: artui_getM ()
- Purpose : Returns the number of F2-units in an ART1 or ART2 network
- in-par : none
- out-par : M : number of F2-Units (-1 is returned if not topologically sorted)
- ret-val : krui_err: Returns an error if no Units defined.
- */
- krui_err artui_getM (int *M)
- {
- krui_err ret_code = KRERR_NO_ERROR;
-
- *M = -1;
-
- if (krui_getNoOfUnits() == 0) {
- ret_code = KRERR_NO_UNITS;
- return (ret_code);
- } /*if*/
-
- if (NetModified) {
- return (ret_code);
- } /*if*/
-
- switch (TopoSortID) {
- case ART1_TOPO_TYPE:
- *M = Art1_NoOfRecUnits;
- break;
- case ART2_TOPO_TYPE:
- *M = Art2_NoOfRecUnits;
- break;
- } /*switch*/
-
- return (ret_code);
- } /* artui_getM () */
-
-
-
- /* funcname: artui_getNa ()
- Purpose : Returns the number of F1a-units in an ARTMAP network
- in-par : none
- out-par : Na: number of F1a-Units (-1 is returned if not topologically sorted)
- ret-val : krui_err: Returns an error if no Units defined.
- */
- krui_err artui_getNa (int *Na)
- {
- krui_err ret_code = KRERR_NO_ERROR;
-
- *Na = -1;
-
- if (krui_getNoOfUnits() == 0) {
- ret_code = KRERR_NO_UNITS;
- return (ret_code);
- } /*if*/
-
- if (NetModified) {
- return (ret_code);
- } /*if*/
-
- if (TopoSortID == ARTMAP_TOPO_TYPE) {
- *Na = ArtMap_NoOfInpUnits_a;
- } /*if*/
-
- return (ret_code);
- } /* artui_getNa () */
-
-
-
-
- /* funcname: artui_getNb ()
- Purpose : Returns the number of F1b-units in an ARTMAP network
- in-par : none
- out-par : Nb: number of F1b-Units (-1 is returned if not topologically sorted)
- ret-val : krui_err: Returns an error if no Units defined.
- */
- krui_err artui_getNb (int *Nb)
- {
- krui_err ret_code = KRERR_NO_ERROR;
-
- *Nb = -1;
-
- if (krui_getNoOfUnits() == 0) {
- ret_code = KRERR_NO_UNITS;
- return (ret_code);
- } /*if*/
-
- if (NetModified) {
- return (ret_code);
- } /*if*/
-
- if (TopoSortID == ARTMAP_TOPO_TYPE) {
- *Nb = ArtMap_NoOfInpUnits_b;
- } /*if*/
-
- return (ret_code);
- } /* artui_getNb () */
-
-
-
-
- /* funcname: artui_getMa ()
- Purpose : Returns the number of F2a-units in an ARTMAP network
- in-par : none
- out-par : Ma: number of F2a-Units (-1 is returned if not topologically sorted)
- ret-val : krui_err: Returns an error if no Units defined.
- */
- krui_err artui_getMa (int *Ma)
- {
- krui_err ret_code = KRERR_NO_ERROR;
-
- *Ma = -1;
-
- if (krui_getNoOfUnits() == 0) {
- ret_code = KRERR_NO_UNITS;
- return (ret_code);
- } /*if*/
-
- if (NetModified) {
- return (ret_code);
- } /*if*/
-
- if (TopoSortID == ARTMAP_TOPO_TYPE) {
- *Ma = ArtMap_NoOfRecUnits_a;
- } /*if*/
-
- return (ret_code);
- } /* artui_getMa () */
-
-
-
- /* funcname: artui_getMb ()
- Purpose : Returns the number of F2b-units in an ARTMAP network
- in-par : none
- out-par : Mb: number of F2b-Units (-1 is returned if not topologically sorted)
- ret-val : krui_err: Returns an error if no Units defined.
- */
- krui_err artui_getMb (int *Mb)
- {
- krui_err ret_code = KRERR_NO_ERROR;
-
- *Mb = -1;
-
- if (krui_getNoOfUnits() == 0) {
- ret_code = KRERR_NO_UNITS;
- return (ret_code);
- } /*if*/
-
- if (NetModified) {
- return (ret_code);
- } /*if*/
-
- if (TopoSortID == ARTMAP_TOPO_TYPE) {
- *Mb = ArtMap_NoOfRecUnits_b;
- } /*if*/
-
- return (ret_code);
- } /* artui_getMb () */
-